package PowerUps;

import java.io.BufferedInputStream;
import java.io.IOException;

import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;

import java.awt.Point;

import Entidades.*;

/**
 * Clase powerUP
* @author Jonathan Fritz - Santiago Salem - Kevin Schweitzer.
 */
public abstract class powerUP extends Entidad {

	/**
	 * Modificacion que debe producir el powerUP en la naveJugador al ser capturado.
	 * @param p, naveJugador que recibira la modificacion.
	 */
	public abstract void efecto(naveJugador p);
	
	/**
	 * Indica el comportarmiento que debe adoptar al producirse una colision.
	 *  @param e, Entidad con la que colisiono.
	 */
	public void colisionCon(Entidad e){
		try {
			sonidoPowerUp();
		} catch (LineUnavailableException | IOException
				| UnsupportedAudioFileException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		juego.removePU(this);
	}
	

	/**
	 * Reproduce el sonido de powerUP capturado
	 * @throws LineUnavailableException, indica que la linea no puede ser abierda porque no esta disponible.
	 * @throws IOException, indica que se produjo un error con algun operacion de entrada/salida
	 * @throws UnsupportedAudioFileException, indica que se produjo un error ya que el archivo no contiene informacion valida de un formato conocido
	 * 
	 */
	private void sonidoPowerUp() throws LineUnavailableException, IOException, UnsupportedAudioFileException{
		if(!juego.getFrameJuego().isMute()){
			BufferedInputStream bis = new BufferedInputStream(getClass().getClassLoader().getResourceAsStream("Sonidos/powerup.wav"));
			AudioInputStream ais = AudioSystem.getAudioInputStream(bis);
			Clip sonido = AudioSystem.getClip();
			sonido.open(ais);
			sonido.start();
		}
	}	
	
	
}
